
fitnessfcn = @LQR_GA;     % 适应度函数句柄
nvars=3;                  % 个体的变量数目

% 设置初始种群，使Q1初始值为20
initialPopulation = [30, 5, 10;    % 第一组：Q1=20,Q3=5,R=20
                    rand(29,3).*repmat([100,100,100],29,1)]; % 其余随机

LB = [0.1 0.1 0.1];       % 上限
UB = [100 100 100];       % 下限
%% 遗传算法  

options = optimoptions('ga', ...
    'PopulationSize', 20, ...
    'MaxGenerations', 20, ...
    'MaxStallGenerations', 10, ...     % 添加早停条件
    'FunctionTolerance', 1e-2, ...     % 放宽收敛条件
    'CrossoverFraction', 0.6, ...
    'MutationFcn', {@mutationuniform, 0.03}, ... 
    'Display', 'iter');

[x_best,fval] = ga(fitnessfcn, 3, [], [], [], [], LB, UB, [], options);

save zuiyouzhi.mat fval x_best   